/*
 * Copyright (C) 2022 KylinSoft Co., Ltd.
 *
 * This program is free software: you can redistribute it and/or modify it under
 * the terms of the GNU General Public License as published by the Free Software
 * Foundation, either version 3 of the License, or (at your option) any later
 * version.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License along with
 * this program. If not, see <https://www.gnu.org/licenses/>.
 */

import QtQuick 2.12
import QtQuick.Window 2.12
import org.ukui.tablet 1.0
import "../baseComponent"

Item {
    width: listView.width
    height: listView.height
    LauncherGridView {
        id: gridView
        width: Screen.width > Screen.height ?
                   240 * 6 * Style.tabletScaleFactor + 1 :
                   240 * 4 * Style.tabletScaleFactor + 1
        y: 75 * Style.tabletScaleFactor
        cellWidth: Style.appIconGridWidth
        cellHeight: Style.appIconGridHeight
        anchors.horizontalCenter: parent.horizontalCenter
        MouseArea {
            id: desktopMouseArea
            property bool editableTrigged: false
            property point startPoint: Qt.point(0, 0)
            anchors.fill: parent
            z: -1
            pressAndHoldInterval: Style.pressIntervalToEditable
            onPositionChanged: {
                if (Math.abs(startPoint.x - mouseX) > 20 * Style.tabletScaleFactor ||
                        Math.abs(startPoint.y - mouseY) > 20 * Style.tabletScaleFactor) {
                    editableTrigged = false
                }
            }
            onPressed: {
                startPoint = Qt.point(mouseX, mouseY)
                editableTrigged = true
            }
            onClicked: {
                //do to edit focus
                modelManager.setAllItemsState(LauncherItem.Normal)
            }
            onPressAndHold: {
                if (!editableTrigged) {
                    return
                }
                startDrag(true)
                modelManager.setAllItemsState(LauncherItem.Editable)
            }
        }
    }
}
